<?php
namespace plugin\ky_shouyin\app\controller\admin;

use support\Request;
use plugin\ky_shouyin\app\controller\BaseController;

class UploadController extends BaseController
{
    /**
     * 上传图片
     */
    public function image(Request $request)
    {
        try {
            // 获取上传的文件
            $file = $request->file('file');
            if (!$file) {
                throw new \Exception('请选择要上传的图片');
            }

            // 验证文件类型
            $allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
            if (!in_array($file->getUploadMimeType(), $allowedTypes)) {
                throw new \Exception('只允许上传 jpg、png、gif 格式的图片');
            }

            // 验证文件大小（2MB）
            if ($file->getSize() > 2 * 1024 * 1024) {
                throw new \Exception('图片大小不能超过2MB');
            }

            // 生成保存路径
            $savePath = 'upload/images/' . date('Ym');
            $saveDir = public_path() . '/' . $savePath;
            if (!is_dir($saveDir)) {
                mkdir($saveDir, 0755, true);
            }

            // 生成文件名
            $ext = $file->getUploadExtension();
            $fileName = date('dHis') . rand(1000, 9999) . '.' . $ext;

            // 移动文件
            $file->move($saveDir . '/' . $fileName);

            // 返回文件访问路径
            $url = '/' . $savePath . '/' . $fileName;
            return json([
                'code' => 0,
                'msg' => '上传成功',
                'data' => [
                    'src' => $url,
                    'title' => $fileName
                ]
            ]);

        } catch (\Exception $e) {
            return json([
                'code' => 1,
                'msg' => '上传失败：' . $e->getMessage()
            ]);
        }
    }
} 